/*
Majority Element

Given an array of size n, find the majority element. The majority element is the element that appears more than  times.

You may assume that the array is non-empty and the majority element always exist in the array.

*/

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <string>
#include <stack>
#include <queue>
#include <fstream>
#include <sstream>
#include <unordered_set>
#include "print.h"
using namespace std;

/**
* Definition for binary tree*/
typedef __int32 uint32_t;


void testForStack()
{
	stack<int> mystack;
	mystack.push(10);
	mystack.push(20);
	mystack.top() -= 5;
	cout << "mystack.top() is now " << mystack.top() << endl;
}

void testForIntToString()
{
	int a = 10;
	stringstream ss;
	ss << a;
	string str = ss.str();
	cout << str << endl;

	string str1 = to_string(a);

}
/*

alpMap[1] = "A";
alpMap[2] = "B";
alpMap[3] = "C";
alpMap[4] = "D";
alpMap[5] = "E";
alpMap[6] = "F";
alpMap[7] = "G";
alpMap[8] = "H";
alpMap[9] = "I";
alpMap[10] = "J";
alpMap[11] = "K";
alpMap[12] = "L";
alpMap[13] = "M";
alpMap[14] = "N";
alpMap[15] = "O";
alpMap[16] = "P";
alpMap[17] = "Q";
alpMap[18] = "R";
alpMap[19] = "S";
alpMap[20] = "T";
alpMap[21] = "U";
alpMap[22] = "V";
alpMap[23] = "W";
alpMap[24] = "X";
alpMap[25] = "Y";
alpMap[26] = "Z";
*/

class Solution {
public:
	int majorityElement(vector<int> &num) {
		int Vecsize = num.size();
		sort(num.begin(),num.end());
		return num[Vecsize / 2];
	}
};



int main(int argc, char* argv[])
{

	string a1 = "1", a2 = "2";
	cout << a1 + a2 << endl;
	cout << a2 + a1 << endl;




	int a = 0;

	for (int i = 1; i < argc; i++){


		cout << argv[i] << endl;
		a = atoi(argv[i]);
	}


	double f = 19;



	Solution s;
	//stackTree.push(p->left);
	//stackTree.push(p->right);

	//ListNode *headA = new ListNode(1);
	//ListNode *pa1 = new ListNode(2);
	//ListNode *pa2 = new ListNode(3);
	//headA->next = pa1;
	//pa1->next = pa2;

	//ListNode *headB = new ListNode(4);
	//ListNode *pa1 = new ListNode(2);
	//ListNode *pa2 = new ListNode(3);
	//headA->next = pa1;
	//pa1->next = pa2;


	vector<int> vecInt;
	
	vecInt.push_back(2);
	vecInt.push_back(2);

	cout <<" The majority: "<<s.majorityElement(vecInt) << endl;




	system("pause");
	return 0;
}